<!--
Google IO 2012 HTML5 Slide Template

Authors: Eric Bidelman <ebidel@gmail.com>
         Luke Mahé <lukem@google.com>

URL: https://code.google.com/p/io-2012-slides
-->
<!DOCTYPE html>
<html>
<head>
  <title>Getting Started with Compute Engine</title>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="chrome=1">
  <!--<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">-->
  <!--<meta name="viewport" content="width=device-width, initial-scale=1.0">-->
  <!--This one seems to work all the time, but really small on ipad-->
  <!--<meta name="viewport" content="initial-scale=0.4">-->
  <meta name="apple-mobile-web-app-capable" content="yes">
  <link rel="stylesheet" media="all" href="theme/css/default.css">
  <link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="theme/css/phone.css">
  <base target="_blank"> <!-- This amazingness opens all links in a new tab. -->
  <script data-main="js/slides" src="js/require-1.0.8.min.js"></script>
</head>
<body style="opacity: 0">

<slides class="layout-widescreen">

  <slide class="logoslide nobackground">
    <article class="flexbox vcenter">
      <span><img src="images/google_developers_logo.png"></span>
    </article>
  </slide>

  <slide class="title-slide segue nobackground">
    <aside class="gdbar"><img src="images/google_developers_icon_128.png"></aside>
    <!-- The content of this hgroup is replaced programmatically through the slide_config.json. -->
    <hgroup class="auto-fadein">
      <h1 data-config-title><!-- populated from slide_config.json --></h1>
      <h2 data-config-subtitle><!-- populated from slide_config.json --></h2>
      <p data-config-presenter><!-- populated from slide_config.json --></p>
    </hgroup>
  </slide>

  <slide>
    <hgroup>
      <h2>What is Google Compute Engine?</h2>
    </hgroup>
    <article>
      <p style="float: right; margin-right: 30px;">
        <img src="https://developers.google.com/compute/images/product-icon.png">
      </p>
      <ul>
        <li>Infrastructure as a Service</li>
        <li>Tackle big computing problems on Google's infrastructure</li>
      </ul>
    </article>
  </slide>

  <slide>
    <hgroup>
      <h2>Google's infrastructure</h2>
    </hgroup>
    <article>
      <ul class="build">
        <li>
          Index billions of web pages
        </li>
        <li>
          72 hrs of video uploaded every minute to YouTube
        </li>
        <li>
          On average, a Google search query has to travel
          1,500 miles to get the answer back to the user
          <br><br>
        </li>
        <li>
          Scalable and efficient
        </li>
      </ul>
    </article>
  </slide>

  <slide>
    <hgroup>
      <h2>Guiding Principles</h2>
    </hgroup>
    <article>
      <ul>
        <li>Secure</li>
        <li>Open and flexible</li>
        <li>Consistent</li>
        <li>Proven</li>
        <li>Enables an ecosystem</li>
      </ul>
    </article>
  </slide>

  <slide class="segue dark nobackground">
    <aside class="gdbar"><img src="images/google_developers_icon_128.png"></aside>
    <hgroup class="auto-fadein">
      <h2>Google Compute Engine UI Demo</h2>
      <h3>Google API Console</h3>
    </hgroup>
  </slide>

  <slide>
    <hgroup>
      <h2>Compute Engine Overview</h2>
    </hgroup>
    <article>
      <p style="float: right;">
        <img src="images/overview.png" style="height: 500px;">
      </p>
      <ul>
        <li>Project</li>
        <li>Compute</li>
        <li>Network</li>
        <li>Storage</li>
        <li>API &amp; Tools</li>
      </ul>
    </article>
  </slide>

  <slide>
    <hgroup>
      <h2>Project</h2>
    </hgroup>
    <article>
      <p style="float: right;">
        <img src="images/project.png" style="height: 400px;">
      </p>
      <ul>
        <li>Based on API Console projects</li>
        <li>Container for all resources</li>
        <li>Team membership</li>
        <li>Billing</li>
      </ul>
    </article>
  </slide>

  <slide>
    <hgroup>
      <h2>Compute</h2>
    </hgroup>
    <article>
      <p style="float: right;">
        <img src="images/instances.png" style="height: 400px;">
      </p>
      <p>
        Linux Virtual Machines
      </p>
      <ul>
        <li>Root access</li>
        <li>Stock images: Ubuntu, CentOS</li>
        <li>Modern processor<br>(Intel Sandy Bridge)</li>
        <li>1, 2, 4, and 8 virtual CPUs</li>
        <li>3.75GB RAM per virtual CPU</li>
      </ul>
    </article>
  </slide>

  <slide>
    <hgroup>
      <h2>Network</h2>
    </hgroup>
    <article>
      <p style="float: right;">
        <img src="images/network_private.png" style="height: 400px;">
      </p>
      <p>
        Virtual private network
      </p>
      <ul>
        <li>Isolated network per project</li>
        <li>Private IPv4 space</li>
        <li>IP level (Layer 3) network</li>
        <li>Internal facing DNS (VM name = DNS name)</li>
      </ul>
    </article>
  </slide>

  <slide>
    <hgroup>
      <h2>Network</h2>
    </hgroup>
    <article>
      <p style="float: right;">
        <img src="images/network_internet.png" style="height: 400px;">
      </p>
      <p>
        Internet access
      </p>
      <ul>
        <li>External IPs</li>
        <li>1-to-1 NAT</li>
        <li>Built in ﬁrewall system</li>
      </ul>
    </article>
  </slide>

  <slide>
    <hgroup>
      <h2>Storage</h2>
    </hgroup>
    <article>
      <p style="float: right;">
        <img src="images/storage_pd.png" style="height: 400px;">
      </p>
      <p>
        Persistent disk
      </p>
      <ul>
        <li>Provisioned via API</li>
        <li>Located in the same zone as the instance</li>
        <li>Encrypted at rest</li>
      </ul>
    </article>
  </slide>

  <slide>
    <hgroup>
      <h2>Storage</h2>
    </hgroup>
    <article>
      <p style="float: right;">
        <img src="images/storage_local.png" style="height: 400px;">
      </p>
      <p>
        Ephemeral disk
      </p>
      <ul>
        <li>Lives and dies with instance</li>
        <li>On the same physical machine</li>
        <li>Encrypted at rest</li>
      </ul>
    </article>
  </slide>

  <slide>
    <hgroup>
      <h2>Storage</h2>
    </hgroup>
    <article>
      <p style="float: right;">
        <img src="images/storage_cloud.png" style="height: 400px;">
      </p>
      <p>
        Cloud storage
      </p>
      <ul>
        <li>Internet object store</li>
        <li>Global API based access</li>
        <li>Frictionless access with service accounts</li>
      </ul>
    </article>
  </slide>

  <slide>
    <hgroup>
      <h2>Tools</h2>
    </hgroup>
    <article>
      <p style="float: right;">
        <img src="images/tools.png" style="height: 400px;">
      </p>
      <ul>
        <li>Command line library - gcutil</li>
        <li>Compute Engine UI</li>
        <li>Partners and ecosystem</li>
      </ul>
    </article>
  </slide>

  <slide class="segue dark nobackground">
    <aside class="gdbar"><img src="images/google_developers_icon_128.png"></aside>
    <hgroup class="auto-fadein">
      <h2>gcutil</h2>
    </hgroup>
  </slide>

  <slide>
    <hgroup>
      <h2>gcutil</h2>
    </hgroup>
    <article>
      <p>
        Start a new instance
      </p>
      <code>
        gcutil addinstance my-instance
      </code><br><br>
      <p>
        List all running instances
      </p>
      <code>
        gcutil listinstances --filter="status eq RUNNING"
      </code><br><br>
      <p>
        Add a network called prod
      </p>
      <code>
        gcutil addnetwork prod
      </code><br><br>
      <p>
        Set up a firewall to accept incoming http connections on port 80
      </p>
      <code>
        gcutil addfirewall web --network=prod --allowed="tcp:http"
      </code>
    </article>
  </slide>

  <slide class="segue dark nobackground">
    <aside class="gdbar"><img src="images/google_developers_icon_128.png"></aside>
    <hgroup class="auto-fadein">
      <h2>Google Compute Engine API Demo</h2>
    </hgroup>
  </slide>

  <slide>
    <hgroup>
      <h2>Compute Engine API</h2>
    </hgroup>
    <article>
      <p>
        REST API
      </p>
      <code>
        POST https://www.googleapis.com/compute/v1beta12/projects/project/instances<br><br>
        {<br>
          "name": string,<br>
          "image": string,<br>
          "machineType": string,<br>
          "status": string,<br>
          "statusMessage": string,<br>
          "zone": string,<br>
          "networkInterfaces": [...],<br>
          "disks": [...],<br>
          "metadata": {...},<br>
          "serviceAccounts": [...]<br>
        }
      </code>
    </article>
  </slide>

  <slide>
    <hgroup>
      <h2>Helpful links</h2>
    </hgroup>
    <article>
      <p>Sign up here:</p>
      <p>
        <a href="https://developers.google.com/compute/docs/signup">
          https://developers.google.com/compute/docs/signup
        </a>
      </p>
      <p>Read the docs:</p>
      <p>
        <a href="https://developers.google.com/compute/">
          https://developers.google.com/compute/
        </a>
      </p>
    </article>
  </slide>
  <!--
  <slide>
    <hgroup>
      <h2>Slide with Iframe</h2>
    </hgroup>
    <article>
      <iframe data-src="http://www.google.com/doodle4google/history.html"></iframe>
    </article>
  </slide>

  <slide>
    <article>
      <iframe data-src="http://www.google.com/doodle4google/history.html"></iframe>
    </article>
  </slide>
  -->

  <slide class="thank-you-slide segue nobackground">
    <aside class="gdbar right"><img src="images/google_developers_icon_128.png"></aside>
    <article class="flexbox vleft auto-fadein">
      <h2>&lt;Thank You!&gt;</h2>
    </article>
    <p class="auto-fadein" data-config-contact>
      <!-- populated from slide_config.json -->
    </p>
  </slide>

  <slide class="logoslide dark nobackground">
    <article class="flexbox vcenter">
      <span><img src="images/google_developers_logo_white.png"></span>
    </article>
  </slide>

  <slide class="backdrop"></slide>

</slides>

<script>
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-1']);
_gaq.push(['_trackPageview']);

(function() {
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

<!--[if IE]>
  <script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js"></script>
  <script>CFInstall.check({mode: 'overlay'});</script>
<![endif]-->
</body>
</html>
